AWS User Notificationsの高度なフィルターを使って通知するイベントを絞ってみた
はじめに
最近AWS User Notificationsがリリースされましたが、皆さん触ってみたでしょうか? 通知を実装するときにはEventBridgeやSNS、Chatbot等を組み合わせて実装するケースが多いと思いますが、これらをまとめて設定できる便利なサービスが増えました。
まだ概要を知らない方はこちらを確認してみてくださいね。
こちらのサービスを使って通知できるイベントを一部絞って通知する方法を紹介します。 今回は例としてGuardDutyイベントの重要度「中」以上のみを通知してみます。
やってみる
前提として先ほどのブログで実装されているリソースは既にある状態で行います。
フィルターの設定
イベントのフィルターはこちらを参考にします。
既に設定されているGuardDutyイベント設定から、「高度なフィルター - オプション」をクリックして開きます。 イベントパターンを入力できる欄が出てくるので、ここにフィルターを追加します。
今回は重要度「中」以上のイベントを通知したいので、4以上のseverityにします。
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ { "numeric": [ ">=", 4 ] } ] } }
このイベントパターンを貼り付けて保存してください。
GuardDutyイベントの通知
GuardDutyのイベントを実際に検知させるのは大変なので、以下のブログを参考にサンプルイベントを3種類(高・中・低)を検知させてみます。
CloudShellを開いて以下のコマンドを3つ実行します。
[cloudshell-user@ip-10-2-85-249 ~]$ aws guardduty create-sample-findings \ > --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \ > --finding-types "Backdoor:EC2/DenialOfService.Dns" [cloudshell-user@ip-10-2-85-249 ~]$ aws guardduty create-sample-findings \ > --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \ > --finding-types "Backdoor:EC2/Spambot" [cloudshell-user@ip-10-2-85-249 ~]$ aws guardduty create-sample-findings \ > --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \ > --finding-types "Discovery:IAMUser/AnomalousBehavior"
GuardDuty側も3つの検出結果が表示されました。
通知の確認
少し時間が経つと、通知先のメールアドレスに以下のような通知が届きました。
通知内容を確認すると、Most recent events
に2つのイベントが含まれています。
• Finding Type: Backdoor:EC2/Spambot • Finding Type: Backdoor:EC2/DenialOfService.Dns
Backdoor:EC2/Spambot
は重要度「中」のイベント、Backdoor:EC2/DenialOfService.Dns
は重要度「高」のイベントなので想定通り重要度が中以上のものをフィルターすることができました。
まとめ
AWS User Notificationsで作成されたイベントルールにフィルターを追加して通知してみました。動作としては、対象のAWSサービスやイベントタイプはAWSが用意しているマネージドルールがイベントを取得して、そこから高度なフィルターでユーザーが設定したフィルターで絞られるようです。
通知内容も見やすく、通知の履歴をコンソールからも確認しやすいのでメリットが大きいサービスなので是非皆さんも利用してみてください。